package logica;

import java.util.ArrayList;

import auxiliares.Coordenada;

public class Disparo {
	private String nombreBarco;
	private Integer codigoArma;
	private Coordenada origen;
	private Coordenada destino;
	// Listado de bandos a los que se informó de este disparo
	private ArrayList<String> bandos; 
	
	/**
	 * Constructor por defecto 
	 */
	public Disparo() {
		bandos =  new ArrayList<String>();
	}

	/**
	 * Constructor normal a partir del barco que dispara, el id del arma y el recorrido del disparo 
	 * @param _nombreBarco
	 * @param _idArma
	 * @param _origen
	 * @param _destino
	 */
	public Disparo(String _nombreBarco, Integer _idArma, Coordenada _origen, Coordenada _destino) {
		
		codigoArma = _idArma;
		origen = _origen;
		destino = _destino;
		nombreBarco = _nombreBarco;
		bandos =  new ArrayList<String>();
	}

	/**
	 * Devuelve un string con todas las propiedades del disparo en XML
	 * @return
	 */
	public String getXML() {
		return  "<NombreBarco>" + getNombreBarco() + "</NombreBarco>" +
				"<CodigoArma>" + getCodigoArma() + "</CodigoArma>" +
				"<DestinoX>" + getDestino().getCoordX() + "</DestinoX>" +
				"<DestinoY>" + getDestino().getCoordY() + "</DestinoY>" +
				"<OrigenX>" + getOrigen().getCoordX() + "</OrigenX>" +
				"<OrigenY>" + getOrigen().getCoordY() + "</OrigenY>";
	}

	/**
	 * Determina si el disparo ya fue avisado o no a un bando
	 * @param _nombreBando
	 * @return
	 */
	public boolean tieneBando(String _nombreBando){
		return bandos.contains(_nombreBando);
	}
	
	/**
	 * Quita un bando de la lista de bandos a los que avisar del disparo
	 * @param _bando
	 */
	public void quitarBando(String _bando) {
		bandos.remove(_bando);
	}
	
	// ********************* GETTERS Y SETTERS *********************
	
	public String getNombreBarco() {
		return nombreBarco;
	}

	public Integer getCodigoArma() {
		return codigoArma;
	}
	
	public Coordenada getDestino() {
		return destino;
	}
	
	public Coordenada getOrigen() {
		return origen;
	}
	
	public void setOrigen(Coordenada origen) {
		this.origen = origen;
	}
	
	public ArrayList<String> getBandos() {
		return bandos;
	}

	public void setBandos(ArrayList<String> bandos) {
		this.bandos = bandos;
	}
}
